/*
分析，最终输出结果是1
原因，*=的原理是先将等式右边计算完之后重新赋值给左侧的值，同时注意一切依照等式左侧的数据类型为准，所以 i *= 0.2 = 0
之后i++ = 1,所以最终结果是1
(疑问)，
1.为什么*=的时候，不会出现报错，不认为类型转换可能损失精度
2.为什么把*=写开就报错了
优化：
在Java中，复合赋值运算符如+=、-=、*=、/=等，在执行时会自动进行类型转换以匹配左边变量的类型。
这种类型转换是由Java语言规范(JLS)定义的，具体表现为：
‌类型转换规则‌：当使用复合赋值运算符时，右边表达式的值会先转换为左边变量的类型。
例如，如果左边是一个byte类型，右边是一个int类型，那么在相加之前，int类型的值会被自动转换为byte类型‌
这种自动类型转换机制确保了代码的简洁性和易读性，同时也避免了显式类型转换可能带来的错误。
*/
public class Homework_10 {
    public static void main(String[] args) {
        int i = 1;
        i *= 0.2;
        i++;
        //int i = 1 * 0.2;
        //int i = 1;
        //i = (int) (i * 0.2);
        System.out.println("i=" + i);
    }
}
